<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>$永远的24k纯帅$</title>
  <script>

    //求两个数字的差
    function getSub(x, y) {
      return x - y;
    }
    console.log(getSub(10, 20));

    //求一组数字中的最大值
    function getArrayMax(array) {
      //定义变量假设这个变量中存储的是最大值
      var max = array[0];
      for (var i = 0; i < array.length; i++) {
        if (max < array[i]) {
          max = array[i];
        }
      }
      return max;
    }
    //    var arr=[10,20,30,40,50];
    //    var max=getArrayMax(arr);
    //    console.log(max);
    var max = getArrayMax([10, 20, 30, 40, 50]);//可以直接把数组传到函数中的
    console.log(max);


    //求一组数字中的最小值
    function getArrayMin(array) {
      //假设这个变量里存储的是最小值
      var min = array[0];
      for (var i = 0; i < array.length; i++) {
        if (min > array[i]) {
          min = array[i];
        }
      }
      return min;
    }
    //测试----调用函数并传入一个数组,把数组中的最小值直接显示出来
    console.log(getArrayMin([10, 20, 30, 40, 1]));


    //求一组数字的和
    function getArraySum(array) {
      var sum = 0;
      for (var i = 0; i < array.length; i++) {
        sum += array[i];
      }
      return sum;
    }
    console.log(getArraySum([1, 2, 3, 4, 5, 6]));


    //求一个数组中的最大值和最小值还有和
    /**
     *  给我一个数组,我返回一个数组(最大值,最小值,和)
     * @param array参数是一个数组
     * @returns {*[]}返回值是一个数组,第一个元素值是最大值,第二个元素值是最小值,第三个元素值是和
     */
    function getArrayMaxAndMinAndSum(array) {
      var min = array[0];//最小值
      var max = array[0];//最大值
      var sum = 0;//和
      for (var i = 0; i < array.length; i++) {
        sum += array[i];//和
        //最大值
        if (max < array[i]) {
          max = array[i];
        }// end if
        //最小值
        if (min > array[i]) {
          min = array[i];
        }// end if
      }// end for
      var arr = [max, min, sum];
      return arr;
    }
    //测试
    var resultArray = getArrayMaxAndMinAndSum([1, 2, 3, 4, 5, 6, 7]);
    console.log("最大值:" + resultArray[0]);//7
    console.log("最小值:" + resultArray[1]);//1
    console.log("和:" + resultArray[2]);//28

    //通过函数实现数组反转
    function reverseArray(arr) {
      for (var i = 0; i < arr.length / 2; i++) {
        var temp = arr[i];
        arr[i] = arr[arr.length - 1 - i];
        arr[arr.length - 1 - i] = temp;
      }
      return arr;
    }
    console.log(reverseArray([1, 2, 3, 4, 5]));

    //通过函数实现冒泡排序
    function sortArray(arr) {
      //控制比较的轮数
      for (var i = 0; i < arr.length - 1; i++) {
        //控制每一轮的比较次数
        for (var j = 0; j < arr.length - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
          }//end if
        }//end for
      }//end for
      return arr;
    }
    console.log(sortArray([0, 19, 34, 10, 100, 2]));


    //求一个数字的阶乘
    function getJieCheng(num) {
      var result = 1;
      for (var i = 1; i <= num; i++) {
        result *= i;
      }
      return result;
    }
    console.log(getJieCheng(5));//1*2*3*4*5
    //求一个数字的阶乘和  5  5的阶乘+4的阶乘+3的阶乘+2的阶乘+1的阶乘

    function getJieChengSum(num) {//5
      var sum=0;//和
      for(var i=1;i<=num;i++){
        sum+=getJieCheng(i);
      }
      return sum;
    }
    console.log(getJieChengSum(5));
    //1 +2+ 6+ 24+120
//函数内部可以调用其他的函数
  </script>
</head>
<body>


</body>
</html>